/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import pojo.Item;

/**
 *
 * @author Rodolfo
 */
@Stateless
public class DaoItem implements DaoItemLocal {

    @PersistenceContext
    private EntityManager manager;

    @Override
    public List<Item> buscaServicosDescricao(String descricao) {
        return this.manager.createNamedQuery("Item.findByDescricao").setParameter("descricao", "%"+descricao+"%").getResultList();
    }

    @Override
    public Item salvar(Item item) throws Exception{
    try {
            item = this.manager.merge(item);
            this.manager.flush();
        } catch (Exception e) {
            throw new Exception("Erro desconhecido ao salvar" + e.getMessage());
        }
     
        return item;
    }

    @Override
    public void excluir(Item item) throws Exception {
    Item it;
       it = this.manager.find(Item.class, item.getIdItem());
        if (it == null) {
            throw new Exception("Nenhum registro com o id informado, tente buscar o registro novamente.");
        }
        try {
            this.manager.remove(it);
            this.manager.flush();
        } catch (Exception e) {
            System.out.println("erroooooooooooooooooooooooooooooooooo");
            if (e.getMessage().contains("Code: 1451")) {
                throw new Exception("Registro utilizado em outra tabela.");
            } else {
                throw new Exception("Erro desconhecido ao excluir.");
            }
        }
    }
    
    
    @Override
    public List<Item> buscaTodosItens() {
        return this.manager.createNamedQuery("Item.findAll").getResultList();
    }

    @Override
    public Item buscaItemPorId(Integer item) {
         return (Item) this.manager.createNamedQuery("Doutor.findByIdItem").setParameter("idItem", item).getSingleResult();
    }
    
}
